/**
 * 
 */
package StringUtilDemo;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;


/**
 * @作者 Administrator
 * @创建日期2015-4-13
 * @版本 java中String的一些用法.
 */
public class StringDemo1   
{  
  
    private static int counter = 0;  
    /** 
     * @param args 
     */  
    public static void main(String[] args)   
    {  
        String str ="javaABjavajavas3sssjava12^&*";          
        System.out.println(stringNumbers(str));  
        getCount();
        getCount2();
        getCount4();
        getCount3();
        getCount5();
        stringConcat();
        testSubString();
        testReplace();
    }  
      
    /** 
     * 找出字符串中某个子字符串的的个数,用indexOf()方法. 
     * indexOf(string value)方法:查找value字符串在父字符串中第一次出现的下标，下标从零开始,返回int.
     * lastIndexOf(String value):查找value字符串在父字符串中最后一次出现的下标,返回int.
     * substring(int index)方法：截取从下标为index开始的字符串(包括index位置的字符).
     * substring(int beginIndex,int endIndex)方法：截取从下标从beginIndex开始,到endIndex结束的字符串(包括beginIindex位置的字符,但不包括endIndex位置的字符).
     * str1.concat(String str):将str字符串拼接到str1字符串中，形成一个新的字符串.
     */  
    public static void testSubString(){
    String str ="javaABjavajavas3sssjava12^&*";  
    String str1=str.substring(6);
    String str2=str.substring(5, 10);  
    System.out.println("testSubString()\t"+str1+"\t"+str2);
    }
    
    public static void testReplace(){
    	String str ="javaABjavajavas3sssjava12^&*";  
    	String str1=str.replace('a', 'b');
    	String str2=str.replaceAll("java", "JAVA");
    	String str3=str.replaceFirst("java", "JAVA");
    	String str4=str.replace("sss", "AAA");
    	System.out.println("testReplace()\t"+str1+"\t"+str2+"\t"+str3+"\t"+str4);
    	
    }
    public static int stringNumbers(String str)  
    {  
        if (str.indexOf("java")==-1)  
        {  
            return 0;  
        }  
        else if(str.indexOf("java") != -1)  
        {  
            counter++;  
            stringNumbers(str.substring(str.indexOf("java")+4));  //递归思想
            return counter;  
        }   
        return 0;  
        
    }  
    
    /** 
     * 找出字符串中某个子字符串的的个数,用split()方法. 
     */  
    public static int getCount(){
    String str ="javaABjavajavas3sssjava12^&*";  
    	if(str.indexOf("java") != -1)  
        {  
            String[] str1 = str.split("java");  
            int num=str1.length-1;
            System.out.println(str1.length-1);  
            return num;            
        }  
        else   
        {  
            System.out.println(0);  
            return 0;
        }      	    	
    }
    
    /** 
     * 找出字符串中one,two,three,four子字符串的的个数,用split()方法. 
     */  
	public static int getCount2(){
    	String str="one,two,three,one,one,four,two,one,two,three";
    	String[] array=str.split(",");
    	int count=0;
    	Set<String> set=new HashSet<String>(10);
    	for(int i=0;i<array.length;i++){
    		set.add(array[i]);
    	}
    	Object[] setArr=set.toArray();
    	for(int j=0;j<setArr.length;j++){
    		 count=0;
    	for(int i=0;i<array.length;i++){    	
		  if(array[i].equalsIgnoreCase((String) setArr[j])){
    				count++;    				
    			}    			
    		}
    	System.out.println(setArr[j]+"的个数为"+count);
    	}    	
    	return count;
 
    }
	
	 /** 
     * 找出字符串中one,two,three,four子字符串的的个数,用split()和iterator()方法. 
     */  
	public static int getCount4(){
    	String str="one,two,three,one,one,four,two,one,two,three";
    	String[] array=str.split(",");
    	int count = 0;
    	Set<String> set=new HashSet<String>(10);
    	for(int i=0;i<array.length;i++){
    		set.add(array[i]);
    	}    
    	Iterator<String> iter=set.iterator();
    	while(iter.hasNext()){
    		 count=0;
    		 String aaa=iter.next();
    	for(int i=0;i<array.length;i++){    	
		  if(array[i].equalsIgnoreCase(aaa)){
    				count++;    				
    			}    			
    		}
    	System.out.println(aaa+"的个数为"+count);
    	}    	
    	return count;
    }
	 
	/** 
     * 找出字符串中大写字母,小写字母,数字,特殊字符的的个数. 
     */  
	public static void getCount3(){
		String str="AsdfNXS@#$%123sdfdf";
		int COUNT=0;
		int count=0;
		int numCount=0;
		int other=0;
		for(int i=0;i<str.length();i++){
			char ch=str.charAt(i);
			if(ch >='a' && ch <='z'){
				count++;
			}else if(ch>='A'&&ch<='Z'){
				COUNT++;
			}else if(ch>='0'&&ch<='9'){
				numCount++;
			}else{
				other++;
			}
		}
		
	System.out.println("大写字母的个数为:"+COUNT+"小写字母的个数为:"+count+"数字的个数为:"+numCount+"特殊字符的个数为:"+other);	
	}
	
	/** 
     * 找出字符串中大写字母,小写字母,数字,特殊字符的的个数. 
     */  
	public static void getCount5(){
		String str="AsdfNXS@#$%123sdfdf";
		int COUNT=0;
		int count=0;
		int numCount=0;
		int other=0;
		for(int i=0;i<str.length();i++){
			char ch=str.charAt(i);
			if(Character.isUpperCase(ch)){
				COUNT++;
			}else if(Character.isLowerCase(ch)){
				count++;
			}else if(Character.isDigit(ch)){
				numCount++;
			}else{
				other++;
			}
		}
		
	System.out.println("大写字母的个数为:"+COUNT+"小写字母的个数为:"+count+"数字的个数为:"+numCount+"特殊字符的个数为:"+other);	
	}
	
	/** 
     * string类型的字符串拼接 
     */  
	public static void stringConcat(){
		String str="我今天很开心";
		String str1=str.concat("djhfjd");
		System.out.println(str1);
		
	}
}  